const http = require("http");
const path = require("path");
const fs = require("fs");
function fileName(name) {
    return path.join(__dirname , name);
}

//使用fs.open(path , flags , callback)方法来完成实验一
//  fs.open(filePath , flags , mode , (err , fd) => {})
/*
    flags: 操作标识 ， 
            r	打开文件以读取文件并在文件不存在时引发异常
            r+	打开文件进行读写。如果文件不存在，则引发异常
            rs+	以同步模式打开文件以进行读写
            w	打开文件进行写入。如果文件不存在，则会创建该文件
            wx	与“ w”相同，但如果存在路径则失败
            w+	打开文件进行读写。如果文件不存在，则会创建该文件
            wx+	与“ w +”相同，但如果存在路径则失败
            a	打开要追加的文件。如果文件不存在，则会创建该文件
            ax	与“ a”相同，但如果存在路径则失败
            a+	打开文件以进行读取和追加。如果文件不存在，则会创建该文件
            ax+	与“ a +”相同，但如果存在路径则失败
    mode: 权限 ， 将默认的设置为读写
    callback回调函数中的中的fd参数是一个文件标识符 ， 这个可以用于之后的使用fs.read() , fs.write() , 来进行读写
*/

//fs.read(fd , buffer , offset , length , position , callback)
/*
    fd 文件描述符 ， 这个是由fs.open的回调函数的参数
    buffer ， 是存放读取到的数据的Buffer对象
    offset指定向buffer中存放数据的起始位置
    length指定读取文件中数据的字节数
    position 指定在文件中读取文件内容的起始位置
    callback回调函数
        err 用于抛出异常
        bytesRead从文件中读取内容的实际字节数
        buffer被读取的缓存区对象
*/
/*
    写文件fs.write(fs , buffer , offset , length , position , (err , write , buffer));
    callback: written 实际写入的字节数 ， buffer:
*/ 
/*
    如何定义一个buffer文件
        
*/
 http.createServer((req , res) => {
    if(process.argv[2]) {
        fs.open("./test.txt" , 'r' , (err , data) => {
            if(err) {
                console.err(err);
            } else {
                let buffer = Buffer.alloc(255);
                console.log(data);
                fs.read(data, buffer, 0, 10, 0, function(err, bytesRead, buffer){
                    if(err) {
                        console.error(err);
                    } else {
                        console.log(123456);
                        console.log(bytesRead);
                        console.log(buffer.toString());
                        console.log("dysd");
                        let content = buffer.toString();
                        fs.close(data , (err) => {
                            console.log(456789);
                        });
                        res.end(content);
                    }
                })
            }
        })
    } else {
        fs.readFile(process.argv[1] , (err , data) => {
            if(err) {
                console.log(err);
            } else {
                res.end(data);
            }
        })
    }
}).listen(3000);
console.log("test");